沨沄极客

一站式搞定 GIF 的录制、处理、压缩 | 实用技巧

在这个人人都能发布内容的时代,GIF 已经成为了生活中最常见的图片格式之一。相比普通的图片,GIF 的最大特点在于「它会动」。同时 GIF 有着图片和视频的双重优势,可以在有限的文件大小里包含更多信息量。在那些无法发布视频的地方,常常扮演着表现内容、传达信息、传递心情的重要角色。

那么 GIF 就没有任何缺点吗?显然不是,它的缺点在于「太大了」,而且色彩不够丰富,处理比较麻烦

一张 GIF 动图

如果有尝试过在网上发布文章的读者,会发现大多数软件和网站为了节约服务器空间,都会对图片的大小进行限制。比如 QQ 限制上传 6 MB 以下的图片,sm.ms 图床限制上传 5MB 以下的图片,少数派限制 2.5 MB 以下的图片。这些限制对静态图片而言,足够放下一张 1080P 大小的图片,但对 GIF 而言就有些苛刻了。

许多人搞不清楚为什么直接录制出来的 GIF 有数十 MB 的大小,为什么在线的 GIF 压缩工具会让画质变得奇差无比,为什么别人录制的数十秒 GIF 却只有 2 MB……

今天就让我来为大家揭晓这些问题的答案,同时给出一套切实可行的方法,带大家完成 GIF 录制、处理、压缩这一整套流程。不一定炫酷,但一定有用。

原理:GIF 图片里到底存了啥

GIF 的全称是 Graphics Interchange Format,图像互换格式,是一种位图图形文件格式。

GIF 的最大特点「能动」,就是由「帧」来实现的,许多帧的静态图片组合成一张动图。换句话说,GIF 实际上是一种由一帧帧图片组合而成的压缩文件。动图的总时长则是由帧数和帧数之间的时间间隔决定的,帧数越多,体积越大

多帧图片组成 GIF

GIF 采用了优秀的压缩算法,在一定程度上保证图像质量的同时,GIF 还能让体积尽可能的小。因为它可以记录前后两帧之间的变化,而不是记录每一帧的图像。如果你尝试把每一帧的图片分开保存,会发现图片体积远远超过 GIF 本身的大小。

但即便如此,由于 GIF 仍然需要记录每个像素点的色彩信息,在比较后进行处理。增加图片的尺寸就意味着增加图片中记录的所有色彩信息。通俗的讲,图片的尺寸越大,体积越大

GIF 也有一些缺点,比如它的颜色质量差。GIF 采用 8 位色,也就是只能用 256 种颜色来存储图片。相比之下,JPEG 格式最高可以有 24 位色。PNG 格式的彩色图像的深度甚至可以多到 48 位色。这种颜色深度上的根本性差距,使得 GIF 的画质看上去总比其他格式要差一些,也很少有人把照片文件以 GIF 格式存储。

这时可能有人会感到疑惑:「既然 GIF 记录的颜色质量差,为什么相同大小的图片 GIF 的体积往往非常大呢?」

图片不同的图片格式体积对比

因为当 GIF 作为动图时,往往会包含多帧图像,一旦像素发生变化,GIF 就需要记录它们的变化,此时图片的色彩变化越多,体积越大。所以在相同尺寸下,GIF 存储的信息量远超 JPG 和 PNG 格式。

了解了 GIF 的原理之后,我们会发现影响 GIF 文件大小的最主要原因,只有 3 点:色彩、帧数、尺寸,大致可以理解为「GIF 体积 = 色彩 × 帧数 × 尺寸」。如果想减小 GIF 的体积,就必须要从这三个方面下功夫。

减小 GIF 体积的三个方面

在接下来介绍录制、处理、压缩这几个步骤时,我们会时刻考虑到 GIF 的特性,在保证良好动态效果的同时,尽可能减小动图的大小。

录制:又好又快地录制动图

如果我们想从头开始创作一张 GIF 动图,通常有两种方式:「拍摄视频」和「录制屏幕」。无论是哪一种方式,都可以用一些技巧来控制图片大小,方便进一步处理。

由于「录制屏幕」的原创程度更高,自由度更高,录制时也有许多讲究,适合作为录制的范例来讲解,所以这里以「录制屏幕」为例。

本文用到的 GIF 录制工具是 Windows 平台免费的轻量化 GIF 录制工具 ScreenToGif,官方绿色便携版仅有 931 KB,却内置了完整的录制工具、GIF 编辑器以及常用的后期标注工具。可以对 GIF 进行一站式的操作。

框选重要信息

许多人初次录制动图会陷入一个误区,那就是「录制过大的区域」。你可能想展示屏幕的一部分,却一下子框选了整个屏幕。不仅无法突出重要信息,还会让图片尺寸变得巨大,难以看清文字。

确定录制区域

框选信息时注意尽可能小范围选取。如果确实要录制整个窗口,那就把窗口大小缩小一些。不要尝试全屏录制。这可以有效控制 GIF 的尺寸。

最后是美观方面的考虑,ScreenToGif 支持直接定位录制窗口,可以不用手动框选,直接定位到需要录制的窗口和子窗口。

如果想做的精致一些,可以先统一设置一个符合 16:9 或是 4:3 的整数尺寸(如 800x450、400x300),然后调整软件窗口来填充录制窗口。这样会让同一篇文章中的多张动图保持相同尺寸,图中的字体大小自然也会保持一致,录制后的视觉效果更佳。

按固定比例录制

减少录制时长,调整录制帧率

与范围过大对应的,「录制过长的时间」也是个问题。GIF 的形式更适合展示单一的操作,如果把录制 GIF 当成拍电影,想在一个 GIF 内拍明白起因、经过、结果,往往会出现过于复杂的连贯动作,会让观众产生疑惑,但又不得不从头再看一遍。我认为,超过 10 秒的复杂操作更适合以视频的形式展现。

帧率是另一个重要因素。如果不想二次修改,可以设置 10 帧 / 秒。动作会稍有些不连贯,但能够有效降低图片大小,一次录制成型。

如果你想尽可能保留细节,则可以适当提高帧率,设置为 25 帧 / 秒。足够展现连贯的动作,如果保存时图片过大,还可以在后期通过其他方式弥补。

调整帧率

减少色彩变化

前面提到 GIF 采用的压缩方式很优秀,是因为它有一个优秀的特性:「能够识别前后两帧之间相同的像素,只储存两帧之间的变化」。所以在相同尺寸、帧率下,色彩变化越小,图片体积也会越小。

在实际录制时,尽量保证录制背景是固定的,只对其中的内容进行修改。有人喜欢录制完一个动作之后,拖拽晃动一下窗口来展示成果。殊不知这一举动会在无形中增加图片的体积。

413 KB 的 GIF
1430 KB 的 GIF

同样是演示简单的选择操作,图 1 和图 2 都是 85 帧,但由于图 2 的变化更大,动图体积增大了三倍有余。所以在录制时尽量减少色彩的大面积变化,可以从根本上降低动图的体积。

处理:对 GIF 进行后期处理

在录制完毕后,录制好的 GIF 总有一些不够完善的地方。

我们喜欢使用动图,是因为纯文字过于单调,而动图可以直观展现每一步的操作。为了更清楚地表达意思,对 GIF 删繁就简就显得很有必要了。在图片中添加「按键提示」「文字提示」也会让观众更好地理解动图想展示的具体内容。

减少等待时间、无用操作

在处理时,我们会发现 GIF 中有一些多余的部分,比如录到一半卡住了,出现了操作失误,未达到预期效果之类的情况。

首先注意到的是减少「空白、等待和停顿」,删除等待时间会进一步缩短等待的时间,提高连贯性。

其次是减少「鼠标多余的移动和点击、打开错误的窗口和菜单」。这些都可以算作无用操作,在录制时就应该避免。如果不慎触发,可以在处理时一并删去。简化无关操作带来的影响。

减少空白等待时间

这些操作看似复杂,其实操作起来非常快,因为等待时间通常是大段大段出现的。按住 Shift 选取多张图片后一次性删除也不过几秒钟时间。反而更需要考虑的是「删除前后的图片衔接是否过于突兀」,来衡量应该删除多少帧数。

预演动作、重新录制

当然,如果你发现失误太多,一帧帧删改起来未免太费劲,倒不如重新录制一遍。

在重新录制时,可以做几遍预演动作,提前「把需要用到的窗口打开、关闭四周无关的窗口、移开桌面多余的图标、换一张好看的壁纸」,这些小细节都属于预演时要注意的事项。

添加信息

对 GIF 做后期处理时需要添加一些特定的信息。比如字幕、按键、说明文本、标题、水印之类的信息。考虑到 GIF 图片质量,在这些需要文字的地方,建议采用干净的无衬线字体,保证在图片压缩之后仍然能让读者看清信息。

添加干净的文字信息

压缩:缩小 GIF 文件大小

通过前面的公式「GIF 体积 = 色彩 × 帧数 × 尺寸」,我们会发现压缩 GIF 的文件大小是需要作出一些取舍的。

尽管有不少在线的 GIF 压缩工具,但实际测试中它们的效果往往不尽如人意,因为它们最常用的方式是「减小图片尺寸」,如果过度缩小图片,很容易让图片观感变差。

减小图片尺寸

我们通常愿意牺牲一些图片尺寸来降低图片尺寸。让动图的长宽减半,可以轻松达到 75% 左右的压缩率。

最有效的方法是缩放。如果有一张 1600 x 900 的动图,让长宽都变成原来的一半 800 x 450,就可以立即降低 75% 的文件大小,是最有效的 GIF 压缩方式。

另一种方法是裁剪,但我不建议用这种方法,因为对图片进行裁剪,相当于变相放大了文字。最好在录制时就确定需要录制的图片大小。所以我在录制阶段就建议大家按比例录制,也是为了方便在这一步进行统一压缩。

按比例调整图片尺寸

减少帧数、删除重复帧

如果文字较多,我们往往不想让图片的尺寸变小,那么我们可以在帧数上下功夫,帧数减半理论上可以达到 50% 左右的压缩率。

在压缩帧数方面,处理的方式是让帧数减半,即 每隔一帧删掉一帧。比如原本录制的动图有 30 帧 / 秒,减半后就是 15 帧 / 秒。对那些高帧率的视频 GIF 而言,利用这种方法可以有效降低图片大小。

副作用则是帧数越少,画面的连贯度就越低。如果原本帧数就在 10 帧 / 秒以下,就不要再使用这种方式压缩 GIF 了,会让动图看起来一顿一顿的。

最后,适当降低帧数总数也能有效降低动图大小,这就是前面说的减少等待时间、无用时间。

每隔 1 帧删除 1 帧

牺牲色彩

色彩减半也可以达到 40% 左右的压缩率。

虽然我不建议采用牺牲色彩这个方式,因为手动修改色彩数量往往会让 GIF 失真。但如果图片中确实不需要展现丰富的色彩,又需要大尺寸和高帧率,此时降低色彩质量也是不得已的选择。

GIF 默认是 256 色,在设置时可以选择颜色减半,比如 128、64、32、16 色,来逐步降低色彩质量。在稍差的画质和更小的体积之间,选择一个最优解。以图中的 GIF 为例,在降低到 64 色之后,仍然可以展现大多数细节,同时体积减少了 40%,这就是属于这张动图的最优解。

适当降低画质

注意,这个方法不适合色彩丰富的视频类动图,颜色压缩会对视频内容产生比较严重的失真。

在尝试过这三种方法之后,我们可以得到这样一个压缩次序:「尺寸 > 帧数 > 色彩」。按照这个优先级去手动调整 GIF 图片大小,往往可以获得质量最好,体积最小的 GIF。

开篇提到的三种方法

上面三种压缩 GIF 的思路都是手动压缩动图的方法。如果你不想了解这么多,觉得太麻烦了,这里也有一些更方便的压缩动图的方式。

命令行压缩工具:Gifsicle

如果你不愿意手动调整这些图片,还可以用一款开源的图片压缩命令行工具:Gifsicle。它的官网提供了 macOS、Windows 以及 Linux 等多个版本的可执行文件。使用方法是通过在命令行窗口输入代码,即可实现 GIF 的压缩。

以常用的压缩图片尺寸为例,可以通过这行代码来实现——

gifsicle.exe -i 原始动图.gif --scale 0.5 -o 输出动图.gif

其中 -i 后跟原始动图,-o 后跟输出动图,--scale 0.5 是指图片的宽高变为原来的一半。执行后即可压缩 75% 左右的图片体积。适合那些偶尔有压缩动图需求的用户使用。

如果需要更多的选项,可以通过 Gifsicle 文档查询。

独特的画质压缩工具:PPDuck

由于直接减小图片尺寸和帧率简单粗暴,许多所谓的压图工具都会采用这两种方法实现压缩。但在一众图片压缩工具中,仍然有独特的存在——PPDuck 是少有的不改变图片尺寸、帧率,而是选择在色彩、画质上下功夫的动图压缩工具。

上面提到了「压缩色彩」的方法可以在一定范围内有效降低文件大小。PPDuck 有自己的一套优化算法,使得画质不会明显降低,相比手动修改色彩要更方便一些。用 PPDuck 压缩图片实测可以降低 40 % 左右的图片大小。

如果你不希望改变动图的尺寸和帧率,这确实是一款值得推荐的动图压缩工具,有 Windows 和 macOS 客户端。

未来:GIF 该何去何从

其实 GIF 格式最早在 1987 年就已经诞生了,1989 年增加了 89a 增强版本,支持透明色和多帧动画。时至今日已经过去了 30 年,在摄像头和屏幕分辨率越来越高的今天,GIF 却仍然需要为文件体积作出妥协,已经显示出了一些疲态,可谓廉颇老矣。

面对这个问题,许多人已经在想办法减少对 GIF 的依赖,除了推出 webp、apng 这种新型的动图格式之外,也有人在考虑用更成熟的 mp4 视频格式来替代 GIF。比如在这篇文章《Evolution of img: Gif without the GIF》中,作者阐述了如何用 <img> 标签来包含 mp4 格式的视频,实现了原本需要 46 MB 的 GIF 变成只需加载 2 MB 的 MP4 的方法(目前只有 Safari 浏览器做了适配),是一项很有意思的技术。随着研究的深入,相信「以视频替代动图」也会是未来发展的一种方向。

不过在现阶段,GIF 仍然以各种形式存在于我们的生活中。希望通过这篇文章,能够让各位更了解 GIF 这种图片格式,学会处理 GIF 的实用技巧。


53

您好,为了保护少数派用户创造的内容、维护良好的社区氛围,我们将从 2019 年 6 月 10 日起实行新的《少数派评论规范》,具体内容您可以通过相关页面了解,感谢您对少数派的理解与支持。(๑•ᴗ•๑)

精选评论 (3)

我的评论

iCc
干货满满!
Henrri
微信公众号运营必读呀哈哈哈哈
暴王
MacOS 推荐 GIF Brewery,和 ScreenToGif 体验基本一样,谁用谁知道

目录

原理:GIF 图片里到底存了啥

录制:又好又快地录制动图

框选重要信息

减少录制时长,调整录制帧率

减少色彩变化

处理:对 GIF 进行后期处理

减少等待时间、无用操作

预演动作、重新录制

添加信息

压缩:缩小 GIF 文件大小

减小图片尺寸

减少帧数、删除重复帧

牺牲色彩

命令行压缩工具:Gifsicle

独特的画质压缩工具:PPDuck

未来:GIF 该何去何从